// import { Service, Inject } from 'typedi';
// import events from '@/subscribers/events';
// import RefundVendorCreditGLEntries from '../RefundVendorCredits/commands/RefundVendorCreditGLEntries';
// import {
//   IRefundCreditNoteDeletedPayload,
//   IRefundVendorCreditCreatedPayload,
// } from '@/interfaces';

// @Service()
// export default class RefundVendorCreditGLEntriesSubscriber {
//   @Inject()
//   refundVendorGLEntries: RefundVendorCreditGLEntries;

//   /**
//    * Attaches events with handlers.
//    */
//   attach(bus) {
//     bus.subscribe(
//       events.vendorCredit.onRefundCreated,
//       this.writeRefundVendorCreditGLEntriesOnceCreated
//     );
//     bus.subscribe(
//       events.vendorCredit.onRefundDeleted,
//       this.revertRefundVendorCreditOnceDeleted
//     );
//   }

//   /**
//    * Writes refund vendor credit GL entries once the transaction created.
//    * @param {IRefundCreditNoteCreatedPayload} payload -
//    */
//   private writeRefundVendorCreditGLEntriesOnceCreated = async ({
//     tenantId,
//     trx,
//     refundVendorCredit,
//   }: IRefundVendorCreditCreatedPayload) => {
//     await this.refundVendorGLEntries.saveRefundCreditGLEntries(
//       tenantId,
//       refundVendorCredit.id,
//       trx
//     );
//   };

//   /**
//    * Reverts refund vendor credit GL entries once the transaction deleted.
//    * @param {IRefundCreditNoteDeletedPayload} payload -
//    */
//   private revertRefundVendorCreditOnceDeleted = async ({
//     tenantId,
//     trx,
//     refundCreditId,
//   }: IRefundCreditNoteDeletedPayload) => {
//     await this.refundVendorGLEntries.revertRefundCreditGLEntries(
//       tenantId,
//       refundCreditId,
//       trx
//     );
//   };
// }
